#include <stdio.h>

//func 是一个函数名
//也是一个函数入口地址
//也是函数的首地址
int func(int a,int b);  //这是一个函数的声明

//加上tpedef后，func_t就不再是函数名了，是一个函数类型
//参数是（int，int）
//返回值int
//可以使用func_t 来定义一个函数指针
typedef int func_t(int a, int b);   //这是一个新类型的定义，和定义结构体一样


int add(int a,int b)
{
    return a + b;
}

int sub(int a,int b)
{
    return a - b;
}

int mul(int a,int b)
{
    return a * b;
}

int div(int a,int b)
{
    return a / b;
}

int main(int argc, char const *argv[])
{
    func_t *pfunc;  // 定义一个func_t类型的变量 , func_t 是一个函数类型的, 因此pfunc是一个函数指针变量
    pfunc = add;
    int ret = pfunc(10,5);
    printf("add=%d\n",ret);

    pfunc = sub;
    ret = pfunc(10,5);
    printf("sub=%d\n",ret);

    pfunc = mul;
    ret = pfunc(10,5);
    printf("mul=%d\n",ret);

    pfunc = div;
    ret = pfunc(10,5);
    printf("div=%d\n",ret);

    return 0;
}
